package com.ikun.common.search.annotation;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ikun.common.search.customhandler.BaseResultCustomHandler;

import java.lang.annotation.*;

/**
 * 用于分页 子查询结果集不能直接封装的字段
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ResultUtil {

    //    粗数据实体类属性名
    String listEntityPropName() default "";

    //    当前字段使用辅表对象的service名称
    Class<? extends IService> resultListUsedService() default IService.class;

    //    当前字段使用辅表对象的mapper名称
    Class<? extends BaseMapper> resultListUsedMapper() default BaseMapper.class;

    //    当前字段对应辅表对象的字段名称
    String resultListEntityPropName() default "";

    //    当前字段查询辅表对象Class
    Class serviceType() default Object.class;

    //    辅表查询字段名称
    String resultListEntityColName() default "id";

    //    辅表对象构建Map使用的键名
    String resultListMapKeyName() default "id";

    //    是否为复杂构建(针对与多个数据来自同一张表)
    boolean isComplexObject() default false;

    //    是否需要自定义处理
    boolean customProcess() default false;

    //    自定义结果集处理类
    Class<? extends BaseResultCustomHandler> customClass() default BaseResultCustomHandler.class;

}
